//
//  RootViewController.swift
//  FWSinaWeibo
//
//  Created by 范伟 on 16/2/22.
//  Copyright © 2016年 FanWei. All rights reserved.
//

import UIKit
import HMRefresh

class RootViewController: UIViewController {

//    lazy var tableView: UITableView = UITableView(frame: CGRectZero, style: .Plain)
    var tableView: UITableView?
    //不懒加载的原因：当用户登陆后，仍然创建VisitorView对象，造成无谓的内存开销
    var visitorView: VisitorView?
    /// 刷新控件
    var refreshControl: HMRefreshControl?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        print("visitorView:\(visitorView)")
        if UserAccount.sharedInstance.isLogin {//登陆成功才发送网络请求加载网络数据
            loadData()
        } else {
            NSNotificationCenter.defaultCenter().addObserver(
                self,
                selector: "loginSuccess",
                name: FWWeiBoLoginSuccessedNotification,
                object: nil)
        }
        // Do any additional setup after loading the view.
    }
    @objc private func loginSuccess() {
        // 切换界面，下次再调用 view 的时候，会重新调用 loadView 方法，再次创建视图
        view = nil
        //登陆成功后移除通知观者
        NSNotificationCenter.defaultCenter().removeObserver(
            self,
            name: FWWeiBoLoginSuccessedNotification,
            object: nil)
    }
    override func loadView() {
        //用户登陆，显示tableView，否则显示登陆的view
//        UserAccount.sharedInstance.isLogin ? initTableView() : initLoginView()
//        initRefreshControl()//让子类自行决定是否包括刷新控件
        //tableView或者登陆view不再设置给控制器的view，而是加载到UIView上
        view = UIView()
        UserAccount.sharedInstance.isLogin ? initTableView() : initLoginView()
    }
    
    ///加载数据，供子类实现
    func loadData() {
    }

}

extension RootViewController {
    private func initTableView() {
        tableView = UITableView(frame: CGRectZero, style: .Plain)
        view.addSubview(tableView!)
        //自动布局，让子视图与控制器view同样大小
        tableView?.snp_makeConstraints(closure: { make in
            /// top + left + bottom + right edges
            make.edges.equalTo(view)
        })
        tableView?.dataSource = self
        tableView?.delegate = self
    }
    
    private func initLoginView() {
        visitorView = VisitorView()
        view.addSubview(visitorView!)
        visitorView?.registerButton.addTarget(self, action: "didClickVisitorViewRegistorButton", forControlEvents: .TouchUpInside)
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "注册",
            style: .Plain,
            target: self,
            action: "didClickVisitorViewRegistorButton")
        visitorView?.loginButton.addTarget(self, action: "didClickVisitorViewLoginButton", forControlEvents: .TouchUpInside)
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "登陆",
            style: .Plain,
            target: self,
            action: "didClickVisitorViewLoginButton")
    }
    
    func initRefreshControl() {
        //如果没有创建tablView，则什么也不做
        guard let tableView = tableView else {
            return
        }
        //如果刷新控件已经创建，不需要再次添加
        if refreshControl != nil {
            return
        }
        refreshControl = HMRefreshControl()
        tableView.addSubview(refreshControl!)
        //设置下拉刷新视图，设置为自定义view
        refreshControl?.pulldownView = PulldownRefreshView.refreshView()
        refreshControl?.normalString = "下拉起飞"
        refreshControl?.pullingString = "放开起飞"
        refreshControl?.refreshingString = "起飞中"
        refreshControl?.lastRefreshString = "末次 "
        refreshControl?.donotPullupString = "没有更多数据了"
        //设置监听方法
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
//        tableView.tableFooterView = pullupView//设置的footerView为上拉刷新控件
    }
}
//MARK:代理方法和数据源方法
extension RootViewController: UITableViewDataSource, UITableViewDelegate {
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0;
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
//    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
//        let section = tableView.numberOfSections - 1
//        let lastRowIndex = tableView.numberOfRowsInSection(section) - 1
//        //判断是否为最后一行，同时没有上拉刷新（避免重复刷新）
//        if section == indexPath.section && indexPath.row == lastRowIndex && !pullupView.isAnimating(){
//            NSLog("上拉刷新")
//            pullupView.startAnimating()
//            loadData()
//        }
//    }
}
//MARK: 访客视图两个按钮监听方法
extension RootViewController {
    
    func didClickVisitorViewLoginButton() {
        let oauthVC = OAuthViewController()
        let nav = UINavigationController(rootViewController: oauthVC)
//        oauthVC.delegate = self
        presentViewController(nav, animated: true, completion: nil)
    }
    
    func didClickVisitorViewRegistorButton() {
        print("点击了注册按钮")
    }
}
// MARK: - OauthViewController代理方法
//extension RootViewController: OauthViewControllerProxy {
//    func oauthViewControllerDidLogin() {
//        // 切换界面，下次再调用 view 的时候，会重新调用 loadView 方法，再次创建视图
//        view = nil
//    }
//}